<?php
class core {
	public $_setVariable;
	public function __construct() 
	{
	}
	
	public function __set($k,$v) 
	{
		$this->_setVariable[$k] = $v;
	}
	
	public function __get($k) 
	{
		return $this->_setVariable[$k];
	}
	
	public function template() 
	{
		if (!($this->template)) 
		{
			require_once ROOT . 'libs/smarty/Smarty.class.php';
			require_once ROOT . 'libs/template.class.php';
			$this->template =  new template();
			//$this->template->debugging = true;
	        $this->template->left_delimiter = "<%";
	        $this->template->right_delimiter = "%>";
	        $this->template->template_dir = ROOT."template";
	        $this->template->compile_dir = ROOT."template/template_c";
	        $this->template->cache_dir = ROOT."template/cache_c";
	        $this->template->assign('arg',$_REQUEST);
		}
		return $this->template;
	}
	
	public function refresh($stat,$url)
    {
        $this->template();
        $this->template->assign('stat',$stat);
        $this->template->assign('url',$url);
        $this->template->display('refresh.php');
        exit;
    }
    
    /*bool scws_close(resource scws_handle)
	说明：关闭一个已打开的 scws 分词操作句柄
	返回：始终为 true
	参数：scws_handle 即之前由 scws_open 打开返回的。*/
	
	/*bool scws_set_charset(resource scws_handle, string charset)
	说明：设定分词词典、规则集、欲分文本字符串的字符集，系统缺省是 gbk 字集。
	返回：始终为 true
	参数：scws_handle 即之前由 scws_open 打开返回的；
	      charset 是要新设定的字符集，目前只支持 utf8 和 gbk。*/
	
	/*bool scws_add_dict(resource scws_handle, string dict_path [, int mode])
	说明：添加分词所用的词典，新加入的优先查找。
	返回：成功返回 true 失败返回 false
	参数：scws_handle 即之前由 scws_open 打开返回的；
	         dict_path 是词典的路径，可以是相对路径或完全路径。（遵查安全模式下的open_basedir）
	         mode 是可选参数，表示加载的方式，其值有三：SCWS_XDICT_XDB SCWS_XDICT_MEM SCWS_XDICT_TXT
	              其中 SCWS_XDICT_TXT 表示文本词典，可结合另外2个值使用*/
	
	/*bool scws_set_dict(resource scws_handle, string dict_path [, int mode])
	说明：设定分词所用的词典并清除已存在的词典列表。
	返回：成功返回 true 失败返回 false
	参数：scws_handle 即之前由 scws_open 打开返回的；
	         dict_path 是词典的路径，可以是相对路径或完全路径。（遵查安全模式下的open_basedir）
	         mode 是可选参数，表示加载的方式，其值有三：SCWS_XDICT_XDB SCWS_XDICT_MEM SCWS_XDICT_TXT
	              其中 SCWS_XDICT_TXT 表示文本词典，可结合另外2个值使用*/
    /*bool scws_set_rule(resource scws_handle, string rule_path)
	说明：设定分词所用的新词识别规则集（用于人名、地名、数字时间年代等识别）。
	返回：成功返回 true 失败返回 false
	参数：scws_handle 即之前由 scws_open 打开返回的；
	      rule_path 是规则集的路径，可以是相对路径或完全路径。（遵查安全模式下的open_basedir）*/
	
	/*bool scws_set_ignore(resource scws_handle, bool yes)
	说明：设定分词返回结果时是否去除一些特殊的标点符号之类。
	返回：始终为 true
	参数：scws_handle 即之前由 scws_open 打开返回的；
	      yes 设定值，如果为 true 则结果中不返回标点符号，如果为 false 则会返回，缺省为 false。*/
	
	/*bool scws_set_multi(resource scws_handle, int mode)
	说明：设定分词返回结果时是否复式分割，如“中国人”返回“中国＋人＋中国人”三个词。
	返回：始终为 true
	参数：scws_handle 即之前由 scws_open 打开返回的；
	      mode 设定值，1~15。1|2|4|8 = short|duality|zmain|zall    
      	按位异或的 1 | 2 | 4 | 8 分别表示: 短词 | 二元 | 主要单字 | 所有单字
	  1.1.8 起 1,2,4,8 分别对应常量 SCWS_MULTI_SHORT  SCWS_MULTI_DUALITY SCWS_MULTI_ZMAIN SCWS_MULTI_ZALL*/
    
    /*bool scws_set_duality(resource scws_handle, bool yes)
	说明：设定是否将闲散文字自动以二字分词法聚合
	返回：始终为 true
	参数：scws_handle 即之前由 scws_open 打开返回的；
	      yes 设定值，如果为 true 则结果中多个单字会自动按二分法聚分，如果为 false 则不处理，缺省为 false。
	
	bool scws_send_text(resource scws_handle, string text)
	说明：发送设定分词所要切割的文本
	返回：成功返回 true 失败返回 false
	参数：scws_handle 即之前由 scws_open 打开返回的；
	      text 是文本的内容。
	注1：系统底层处理方式为对该文本增加一个引用，故不论多长的文本并不会造成内存浪费；
	注2：执行本函数时，若未加载任何词典和规则集，则会自动试图在ini指定的缺省目录下查找词典和规则集。*/
    
    /*mixed scws_get_result(resource scws_handle)
	说明：根据 send_text 设定的文本内容，返回一系列切好的词汇。
	返回：成功返回切好的词汇组成的数组， 若无更多词汇，返回 false。
	参数：scws_handle 即之前由 scws_open 打开返回的。
	
	注1：每次切割后本函数应该循环调用，直到返回 false 为止，因为程序每次返回的词数是不确定的。
	注2：返回的词汇包含的键值有：word (string, 词本身) idf (folat, 逆文本词频) 
	                             off (long, 在文本中的位置) attr(string, 词性表示)
	
	mixed scws_get_tops(resource scws_handle [, int limit [, string attr]] )
	说明：根据 send_text 设定的文本内容，返回系统计算出来的最关键词汇列表。
	返回：成功返回切好的词汇组成的数组， 若无更多词汇，返回 false。
	参数：scws_handle 即之前由 scws_open 打开返回的；
	      limit 可选参数，返回的词的最大数量，缺省是 10；
	      attr 可选参数，是一系列词性组成的字符串，各词性之间以半角的逗号隔开，
	      这表示返回的词性必须在列表中，如果以~开头，则表示取反，词性必须不在列表中，
	      缺省为NULL，返回全部词性，不过滤。
	
	mixed scws_get_words(resource scws_handle, string attr )
	说明：根据 send_text 设定的文本内容，返回系统中词性符合要求的关键词汇。
	返回：成功返回符合要求词汇组成的数组，返回 false。
	参数：scws_handle 即之前由 scws_open 打开返回的；
	        attr 是一系列词性组成的字符串，各词性之间以半角的逗号隔开，
	        这表示返回的词性必须在列表中，如果以~开头，则表示取反，词性必须不在列表中，
	        若为空则返回全部词性，不过滤。
	
	bool scws_has_words(resource scws_handle, string attr )
	说明：根据 send_text 设定的文本内容，返回系统中是否包括符合词性要求的关键词。
	返回：如果有则返回 true，没有就返回 false。
	参数：scws_handle 即之前由 scws_open 打开返回的；
	        attr 是一系列词性组成的字符串，各词性之间以半角的逗号隔开，
	        这表示要判断的词只要有一个符合词性要求就立即返回 true，
	        若为空则只要 text 不为空就返回 true.
	
	mixed scws_version(void)
	说明：返回 scws 版本号名称信息。
	返回：字符串
	参数：无
	
	类对象用法参照函数用法，区别就是不需要传入第一参数（会自动从handle的属性中取值）。*/
    
    public function dict($text)
    {
    	$dict	= scws_new();
    	$dict->set_charset('utf-8');
    	$dict->set_dict('/usr/local/scws/etc/dict.utf8.xdb');
    	$dict->set_rule('/usr/local/scws/etc/rules.ini');
    	$dict->set_ignore(true);
    	$dict->set_multi(false);
    	$dict->set_duality(false);
    	
    	$dict->send_text($text);
    	$array	= $dict->get_result();
    	foreach ($array as $key=>$val)
    	{
    		if (!strstr($val['attr'],'n')) unset($array[$key]);
    	}
    	return $array;
    }
}
